<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
	<script>
			//1.编写一个函数实现冒泡排序算法,可以把数组里面的数字进行从小到大排列(提高题)
			var arr = [1,5,2,4,6,3];
			for(var i=0;i<arr.length;i++){			//主队
				for(var j=i+1;j<arr.length;j++){		//客队
					if(arr[i]>arr[j]){				//比较大小
						var tmp = arr[j];
						arr[j] = arr[i];
						arr[i] = tmp;
					}
				}
			}
			console.log(arr);
			//2.小明去存1000钱，每天会产生1%的利息，求问，30天后，小明可以拿回多少钱
			function digui1(n){
				if(n==0){
					return 1000;
				}
				return digui1(n-1)*1.01;
			}
			console.log(digui1(30));
			
			
			//3.小明题目升级版，小明拿着1000块在周一买入基金，一开户立给10块红利，逢周六日没有利息，平时利息为1%，请问30天后，小明可以拿回多少钱？
			function digui2(n){
				if(n==0){
					return 1010;
				}
				if(n%7==6||n%7==0){
					return digui2(n-1);
				}
				return digui2(n-1)*1.01;
			}
			console.log(digui2(30));
			
			
			
			//4.小猴子第一天摘下若干桃子,当即吃掉一半,又多吃一个.第二天早上又将剩下的桃子吃一半,又多吃一个.以后每天早上吃前一天剩下的一半另一个.到第10天早上猴子想再吃时发现,只剩下一个桃子了.问第一天猴子共摘多少个桃子？
			function digui3(n){
				if(n==10){
					return 1;
				}
				return 2*(digui3(n+1)+1);
			}
			console.log("猴子吃桃:"+digui3(1));
			
			
			
			//5.有雌雄一对兔子，假定过两个月便可繁殖雌雄各一的一对小兔子。问过n个月后共有多少对兔子？
			function digui4(n){
				if(n==0){
					return 1;
				}
				return n%2==0?2*digui4(n-1):digui4(n-1);		//当偶数月份时，才生宝宝
			}
			
			console.log("总共生了兔子:"+digui4(19));
			
			/*6.有5个人坐在一起，问第五个人多少岁？他说比第4个人大2岁。问第4个人岁数，他说比第3个人大2岁。问
			第三个人，又说比第2人大两岁。问第2个人，说比第一个人大两岁。最后问第一个人，他说是10岁。请问第五个
			人多大？ */
			/*1.程序分析：利用递归的方法，递归分为回推和递推两个阶段。要想知道第五个人岁数，需知道第四人的岁数，
			依次类推，推到第一人（10岁），再往回推。 
			*************/
			function digui6(n){
				if(n==1){
					return 10;
				}
				return digui6(n-1)+2;
			}
			document.write("第5个人年龄是"+digui6(5));
			
			
			
			//【提高题】7.一个人赶着鸭子去每个村庄卖，每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子，问他出发时共赶多少只鸭子？经过每个村子卖出多少只鸭子？ 
			//提示：反过来思考，他 往回走 ，每过一个村庄 鸭子数 +1  再乘以2.所以
			// 0  剩余     x = (y+1)*2      		
			// 1  剩余     x = (y+1)*2    
			// 2  剩余     x = (y+1)*2    
			// ...
			// 7  剩余     x = (y+1)*2    
			// 8  剩余     2
			
			function duck(n){
				if(n==8){
					return 2;
				}
				return (duck(n+1)+1)*2; 
			}
//			console.log(duck(0));	//传入的是0，表示进入第一个村前的鸭子数量
			
			/*上面是计算出  第一个问题，下面是经过修改后，计算出每个村子卖出的鸭子*/
			var next=2;
			var arr10=[];//用来存储经过每个村卖出的鸭子
			function duck(n){
				if(n==8){
					return 2;
				}
				var num = (duck(n+1)+1)*2;
				
				arr10.push(num-next);
				next =num
				return num; 
			}
			console.log("进村前，总共鸭子数量是："+duck(0));	//传入的是0，表示进入第一个村前的鸭子数量
			console.log("每条村所贩卖的鸭子数量是："+arr10.reverse());
	
			
		</script>
		
		
</html>
